%%
% wrapper para el método de agrupamiento kmeans.
% Si la cantidad de datos que hay, es menor que la cantidad de clústers, retornamos una matriz vacía
% para que no falle el algoritmo por error.
function bmus = wKmean(sData, k)
    %if strcmp(class(sData), 'struct')
    % si es un struct, asumimos que tiene una componente data con los datos
    % para realizar el kmeans
    if isstruct(sData)
        data = sData.data;
    else
        data = sData;
    end

    if length(data(:,1)) < k
        % No hay suficientes datos para ejecutar el algoritmo... seguramente por una mala configuración
        % entonces directamente retornamos bmus vacío.
        bmus = [];
        return
    end
    
    [bmus, kms] = kmeans(data,k,'Distance','sqEuclidean','emptyaction','singleton');
    
    % TODO: falta ordenar los centroides y en base a eso, ordenar los
    % bmuses.
    %[kms i_orig_kms] = sortrows(kms);
    %bmus_aux = zeros(length(bmus), 1);
    
    %for i = 1:length(i_orig_kms)
    %    bmus_aux(find(bmus==i)) = i_orig_kms(i);
    %end
    %bmus = bmus_aux;
end 
